1. Field of the Invention
The invention is related to a proxy device and method of operation for a data network, and in particular to a proxy device and method of operation for a windowing Internet Protocol (IP) data network.
2. Description of the Prior Art
The popularity of data networks has been made possible through communication protocols that allow computer devices to communicate regardless of the type of device and regardless of the type of communication medium. For example, many computers are networked together using the TCP/IP communication protocol that sends data as discrete packets.
Windowing protocols are one transmission scheme that is widely used to guarantee error-free delivery of data packets. Windowing protocols dictate that an acknowledgement be returned from the destination to the source when a “window” of packets are received at the destination. This avoids sending an acknowledgement for each received data packet. Windowing protocols dictate that, at a minimum, the transmitter must receive one acknowledgment during the course of a transmitted window—a well matched window would never reach the maximum window size (that would mean that the transmission must stop and wait for some time period). Windowing therefore operates by sending up to a predetermined number of packets before having to wait for an acknowledgement of error-free delivery. The window size is the number of data packets that can be sent before an acknowledgement is required. Windowing protocols provide a reliable mechanism for detecting and correcting lost and/or damaged data packets. The windowing therefore is used to guarantee delivery of data packets in an error-free fashion between transmission endpoints. Several windowing protocol variants exist, but they all have the same general advantage that they do not have to wait for the acknowledgment of each transmitted unit before sending the next and, likewise, they all suffer from the fact that they must stop and wait when the “window” is in use. In addition, windowing protocols come with a cost in the form of an end-to-end latency in the transmission of a window of packets.
For example, if a protocol has a window size of 4, the transmitting side may fill 4 unit “buffers” (memory storage locations) with data to transmit and begin sending them without consideration of the receiver. If the transmitting side manages to send all 4 unit buffers before the receiver acknowledges receiving any of the 4, then the transmitting side must stop and wait. If any of the transmitting buffers have been acknowledged prior to the transmitter completing the transmission of all 4 unit buffers, the transmitting side may reuse the acknowledged unit buffer by overwriting it with new data to transmit—thus managing to continue transmitting at full rate.
Windowing protocols (such as the Sockets protocol) were designed when most people only had narrow-band access, such as over an analog telephone line. These windowing protocols, while popular and reliable, are frequently unable to use all of the available bandwidth because of a combination of window size limitations, transmission latency, and transmission error rates. For example, the Sockets windowing protocol is generally limited to a data transmission rate of between 250 to 300 kilobytes-per-second (kbps) under normal network conditions, regardless of the available connection capacity.
Certain circumstances are inherently difficult for windowing protocols. Situations where the link delay is very large, or where the transmission rate sufficiently exceeds the window size are very difficult for windowing protocols. For instance, in the previous example, if the link delay was large enough that 200 unit buffers could be transmitted before the receiving end received the first buffer of data, then the window size of 4 would mean that the link could not be more than 1% utilized (200 buffer time from transmitter to receiver and 200 buffer time on acknowledgment from receiver back to transmitter equals 400 buffer time taken for every 4 buffers transmitted). The situation is worse, of course, if the receiver takes a long time to decide to acknowledge the transmission.
FIG. 1 shows a prior art windowing approach to data packet routing and transmission. In the prior art, a group of data packets (i.e., a “window” of data packets) is sent from the source to the destination in a group. The transmission will generally transit multiple nodes, in a chain of hops. In the example shown, each data packet of the window is routed from the source to node 1, from node 1 to node 2, from node 2 to node 3, from node 3 to node 4, etc., until all of the packets have been received in the destination. The number of intervening nodes will depend on the physical location of the source and destination, the data network carrier and carrier configuration, etc. The destination performs some manner of error checking on the received data packets, such as checking parity bits, Cyclic Redundancy Checking (CRC), checksumming, etc. The error checking can determine if any data is missing or corrupted. If the data transfer passes the error checking operation, the destination issues a positive acknowledgement (ACK) to the source, signaling acceptance of the received packet data. If one or more errors are detected, the destination issues a negative acknowledgement (NAK) that signals the source to re-transmit that data. The ACK/NAK travels back through the chain of nodes to the source. The end-to-end latency is the time required not only to transmit all of the data packets of the window to the source, but also includes the time required for the ACK/NAK to travel back to the source.
A drawback to the prior art windowing approach is that the source uses a transmit buffer to transmit the data and must wait for an ACK before reusing any of the transmit buffers. During a data transmission, the transmit buffer is repeatedly filled, the data is transmitted, the transmit buffer is re-filled, etc. However, the source holds the previously transmitted data in the transmit buffer until the ACK is received. The acknowledged transmit buffer data cannot be overwritten with new data in case a NAK is received and the current data must be retransmitted. Therefore, a delay is built into the buffering-windowing transmission scheme. In operation, the source must fill the transmit buffer, transmit the data, wait for an ACK, and then refill (and overwrite) the transmit buffer when the ACK is received. The prior art approach wait time for the ACK is therefore a built-in delay that adds to the transmission latency.
The acknowledgement component of the transmission delay in the prior art windowing approach was not appreciably noticeable when low-bandwidth access links were common. However, the increasing availability of high-bandwidth access has made the acknowledgement a large component of the end-to-end transmission delay. As a result, for large file transfers, the end-to-end acknowledgement delay has become significant and frustrating for users. This is especially true of file downloads from a network source to an end user (such as downloads from a file server or commercial access provider).
Several remedial approaches to the acknowledgement delay have been tried in the prior art. In one remedial approach, servers have been placed in the access networks. In this remedial approach, any re-requested data can be immediately provided to the destination without downloading that data from the source. By caching the downloaded data, access time is greatly improved. However, the caching approach is not an optimal solution. If the requested data is not currently cached or is not able to be cached, the acknowledgement delay is not avoided. In addition, the caching approach does not avoid the acknowledgement delay on the first download of a particular file, and only avoids the acknowledgement delay on subsequent requests for the particular file. Furthermore, the caching approach is expensive and may not be particularly effective in situations where data needs are unpredictable or where the data exceeds the size of the available cache memory.
Another prior art remedial approach has been to split a requested data into multiple data streams. Each data stream is separately transmitted to the destination, and therefore can be transferred substantially in parallel. However, this remedial approach also has its drawbacks. Although the acknowledgement delay for each data stream occurs substantially in parallel, the acknowledgement delay is not avoided and the end-to-end acknowledgement delay is not minimized or reduced. In addition, this prior art approach introduces additional complexity and potential for error in the re-combining of the data streams at the destination. Furthermore, both the source and the destination must have special software to perform the splitting and re-combining.
Yet another prior art remedial approach has been to use a larger transmit buffer and a corresponding larger packet size. This approach attempts to push more data through a larger pipe, and the larger packet size reduces the number of acknowledgements needed for a given file size. However, standard windowing approaches typically do not allow packet size to be increased beyond certain limits, and the maximum transmit buffer size is generally determined by the manufacturer. Intermediate nodes must agree to allowing the larger packet sizes and there is significant motivation to not allow larger packets. The result is a practical limit on how much the packet size can be increased.